package ihm;

import controller.DateControleur;
import java.awt.Dimension;
import java.awt.Font;
import javax.swing.*;

/**
 * Classe qui affiche, dans la partie gauche de la fenêtre, le panel nommé "Trace d'exécution".
 * 
 * @author Jason
 */
public class PanelTraceExecution extends JPanel {

	private static final long serialVersionUID = 1L;

	private final String TRACE_EXECUTION = "Trace d'exécution";
	
	private JLabel lblTraceExecution;
	private static JTextArea taTraceExecution;
	
	private Font policeTitres = new Font("Dialog",Font.BOLD,14);
        private static DateControleur dateControleur = null;
	
	/**
	 * Constructeur.
	 */
	public PanelTraceExecution(DateControleur dc) {
            if(dateControleur == null) {    
                dateControleur = dc;
            }
            lblTraceExecution = new JLabel(TRACE_EXECUTION);
            lblTraceExecution.setFont(policeTitres);

            taTraceExecution = new JTextArea();
            taTraceExecution.setFont(new Font("Arial", Font.PLAIN, 11));
            taTraceExecution.setEditable(false);

            this.creerMarges();
	    this.definirLayout();
	}	
	
	/**
	 * Créé les marges qui permettent de créer un espace autour du contenu du JPanel.
	 */
	private void creerMarges() {
            this.setBorder(
                BorderFactory.createEmptyBorder(
                                20,20,20,20
                )
            );
	}
	
	/**
	 * Met en forme le panel.
	 */
	private void definirLayout() {
		JScrollPane jsp = new JScrollPane(taTraceExecution);
		jsp.setPreferredSize(new Dimension(100, 100));//Taille par défaut.
                
		GroupLayout layout = new GroupLayout(this);
		this.setLayout(layout);
		
		layout.setHorizontalGroup(
			layout.createParallelGroup(GroupLayout.Alignment.CENTER)
				.addComponent(lblTraceExecution)
				.addComponent(jsp)
		);
		
 		layout.setVerticalGroup(
                layout.createSequentialGroup()
				.addComponent(lblTraceExecution)
				.addComponent(jsp)
 		);
	}
	
	/**
	 * Ecrit une trace d'exécution dans la zone de texte.
	 * 
	 * @param texte
	 */
	public static void ecrireTraceExecution(String texte) {
            taTraceExecution.append(dateControleur + " | "+texte+"\n");
            // Pour que le JScrollPane reste toujours en bas
            taTraceExecution.setCaretPosition(taTraceExecution.getDocument().getLength());
	}
        
        public static void resetTraceExecution() {
            taTraceExecution.setText("");
        }
}
